const jss = [{
  id: `1`,
  type: `js`,
  title: `JavaScript有哪些数据类型，它们的区别？`
}, {
  id: `2`,
  type: `js`,
  title: `数据类型检测的方式有哪些`
}, {
  id: `3`,
  type: `js`,
  title: `判断数组的方式有哪些`
}, {
  id: `4`,
  type: `js`,
  title: `null和undefined区别`
}, {
  id: `5`,
  type: `js`,
  title: `typeof null 的结果是什么，为什么？`
}, {
  id: `6`,
  type: `js`,
  title: `intanceof 操作符的实现原理及实现`
}, {
  id: `7`,
  type: `js`,
  title: `为什么0.1+0.2 ! == 0.3，如何让其相等`
}, {
  id: `8`,
  type: `js`,
  title: `如何获取安全的 undefined 值？`
}, {
  id: `9`,
  type: `js`,
  title: `typeof NaN 的结果是什么？`
}, {
  id: `10`,
  type: `js`,
  title: `isNaN 和 Number.isNaN 函数的区别？`
}, {
  id: `11`,
  type: `js`,
  title: `== 操作符的强制类型转换规则？`
}, {
  id: `12`,
  type: `js`,
  title: `其他值到字符串的转换规则？`
}, {
  id: `13`,
  type: `js`,
  title: `其他值到数字值的转换规则？`
}, {
  id: `14`,
  type: `js`,
  title: `其他值到布尔类型的值的转换规则？`
}, {
  id: `15`,
  type: `js`,
  title: `|| 和 && 操作符的返回值？`
}, {
  id: `16`,
  type: `js`,
  title: `Object.is() 与比较操作符 “===”、“==” 的区别？`
}, {
  id: `17`,
  type: `js`,
  title: `什么是 JavaScript 中的包装类型？`
}, {
  id: `18`,
  type: `js`,
  title: `JavaScript 中如何进行隐式类型转换？`
}, {
  id: `19`,
  type: `js`,
  title: `+ 操作符什么时候用于字符串的拼接？`
}, {
  id: `20`,
  type: `js`,
  title: `为什么会有BigInt的提案？`
}, {
  id: `21`,
  type: `js`,
  title: `object.assign和扩展运算法是深拷贝还是浅拷贝，两者区别`
}, {
  id: `22`,
  type: `js`,
  title: `let、const、var的区别`
}, {
  id: `23`,
  type: `js`,
  title: `const对象的属性可以修改吗`
}, {
  id: `24`,
  type: `js`,
  title: `如果new一个箭头函数的会怎么样`
}, {
  id: `25`,
  type: `js`,
  title: `箭头函数与普通函数的区别`
}, {
  id: `26`,
  type: `js`,
  title: `箭头函数的this指向哪⾥？`
}, {
  id: `27`,
  type: `js`,
  title: `扩展运算符的作用及使用场景`
}, {
  id: `28`,
  type: `js`,
  title: `Proxy 可以实现什么功能？`
}, {
  id: `29`,
  type: `js`,
  title: `对对象与数组的解构的理解`
}, {
  id: `30`,
  type: `js`,
  title: `如何提取高度嵌套的对象里的指定属性？`
}, {
  id: `31`,
  type: `js`,
  title: `对 rest 参数的理解`
}, {
  id: `32`,
  type: `js`,
  title: `ES6中模板语法与字符串处理`
}, {
  id: `33`,
  type: `js`,
  title: `new操作符的实现原理`
}, {
  id: `34`,
  type: `js`,
  title: `map和Object的区别`
}, {
  id: `35`,
  type: `js`,
  title: `map和weakMap的区别`
}, {
  id: `36`,
  type: `js`,
  title: `JavaScript有哪些内置对象`
}, {
  id: `37`,
  type: `js`,
  title: `常用的正则表达式有哪些？`
}, {
  id: `38`,
  type: `js`,
  title: `对JSON的理解`
}, {
  id: `39`,
  type: `js`,
  title: `JavaScript脚本延迟加载的方式有哪些？`
}, {
  id: `40`,
  type: `js`,
  title: ` JavaScript 类数组对象的定义？`
}, {
  id: `41`,
  type: `js`,
  title: `数组有哪些原生方法？`
}, {
  id: `42`,
  type: `js`,
  title: `Unicode、UTF-8、UTF-16、UTF-32的区别？`
}, {
  id: `43`,
  type: `js`,
  title: `常见的位运算符有哪些？其计算规则是什么？`
}, {
  id: `44`,
  type: `js`,
  title: `为什么函数的 arguments 参数是类数组而不是数组？如何遍历类数组?`
}, {
  id: `45`,
  type: `js`,
  title: `什么是 DOM 和 BOM？`
}, {
  id: `46`,
  type: `js`,
  title: `对类数组对象的理解，如何转化为数组`
}, {
  id: `47`,
  type: `js`,
  title: `escape、encodeURI、encodeURIComponent 的区别`
}, {
  id: `48`,
  type: `js`,
  title: `对AJAX的理解，实现一个AJAX请求`
}, {
  id: `49`,
  type: `js`,
  title: `JavaScript为什么要进行变量提升，它导致了什么问题？`
}, {
  id: `50`,
  type: `js`,
  title: `什么是尾调用，使用尾调用有什么好处？`
}, {
  id: `51`,
  type: `js`,
  title: ` ES6模块与CommonJS模块有什么异同？`
}, {
  id: `52`,
  type: `js`,
  title: `常见的DOM操作有哪些`
}, {
  id: `53`,
  type: `js`,
  title: `use strict是什么意思 ? 使用它区别是什么？`
}, {
  id: `54`,
  type: `js`,
  title: `如何判断一个对象是否属于某个类？`
}, {
  id: `55`,
  type: `js`,
  title: `强类型语言和弱类型语言的区别`
}, {
  id: `56`,
  type: `js`,
  title: `解释性语言和编译型语言的区别`
}, {
  id: `57`,
  type: `js`,
  title: `for...in和for...of的区别`
}, {
  id: `58`,
  type: `js`,
  title: `如何使用for...of遍历对象`
}, {
  id: `59`,
  type: `js`,
  title: `ajax、axios、fetch的区别`
}, {
  id: `60`,
  type: `js`,
  title: `数组的遍历方法有哪些`
}, {
  id: `61`,
  type: `js`,
  title: `forEach和map方法有什么区别`
}, {
  id: `62`,
  type: `js`,
  title: `对原型、原型链的理解`
}, {
  id: `63`,
  type: `js`,
  title: `原型修改、重写`
}, {
  id: `64`,
  type: `原型链指向`,
}, {
  id: `65`,
  type: `js`,
  title: `原型链的终点是什么？如何打印出原型链的终点？`
}, {
  id: `66`,
  type: `js`,
  title: `如何获得对象非原型链上的属性？`
}, {
  id: `67`,
  type: `js`,
  title: `对闭包的理解`
}, {
  id: `68`,
  type: `js`,
  title: `对作用域、作用域链的理解`
}, {
  id: `69`,
  type: `js`,
  title: `对执行上下文的理解`
}, {
  id: `70`,
  type: `js`,
  title: `对this对象的理解`
}, {
  id: `71`,
  type: `js`,
  title: `call() 和 apply() 的区别？`
}, {
  id: `72`,
  type: `js`,
  title: `实现call、apply 及 bind 函数`
}, {
  id: `73`,
  type: `js`,
  title: `异步编程的实现方式？`
}, {
  id: `74`,
  type: `js`,
  title: `setTimeout、Promise、Async/Await 的区别`
}, {
  id: `75`,
  type: `js`,
  title: `对Promise的理解`
}, {
  id: `76`,
  type: `js`,
  title: `Promise的基本用法`
}, {
  id: `77`,
  type: `js`,
  title: `Promise解决了什么问题`
}, {
  id: `78`,
  type: `js`,
  title: `Promise.all和Promise.race的区别的使用场景`
}, {
  id: `79`,
  type: `js`,
  title: `对async/await 的理解`
}, {
  id: `80`,
  type: `js`,
  title: `await 到底在等啥？`
}, {
  id: `81`,
  type: `js`,
  title: `async/await的优势`
}, {
  id: `82`,
  type: `js`,
  title: `async/await对比Promise的优势`
}, {
  id: `83`,
  type: `js`,
  title: `async/await 如何捕获异常`
}, {
  id: `84`,
  type: `js`,
  title: `并发与并行的区别？`
}, {
  id: `85`,
  type: `js`,
  title: `什么是回调函数？回调函数有什么缺点？如何解决回调地狱问题？`
}, {
  id: `86`,
  type: `js`,
  title: `setTimeout、setInterval、requestAnimationFrame 各有什么特点？`
}, {
  id: `87`,
  type: `js`,
  title: `对象创建的方式有哪些？`
}, {
  id: `88`,
  type: `js`,
  title: `对象继承的方式有哪些？`
}, {
  id: `89`,
  type: `js`,
  title: `浏览器的垃圾回收机制`
}, {
  id: `90`,
  type: `js`,
  title: `哪些情况会导致内存泄漏`
}, {
  id: `91`,
  type: `js`,
  title: `async/await相比于Promise的优势？`
}, {
  id: `92`,
  type: `js`,
  title: `JavaScript的参数是按照什么方式传递的？`
}, {
  id: `93`,
  type: `js`,
  title: `聊一聊如何在JavaScript中实现不可变对象？`
}, {
  id: `94`,
  type: `js`,
  title: `JavaScript的基本类型和复杂类型是储存在哪里的？`
}, {
  id: `95`,
  type: `js`,
  title: `DOM的事件模型是什么？`
}, {
  id: `96`,
  type: `js`,
  title: `DOM的事件流是什么？`
}, {
  id: `97`,
  type: `js`,
  title: `什么是事件委托`
}]
export default jss